Computer graphics is the art and science of generating pictures, images, or other graphical or pictorial information with a computer. Many of the current graphics systems are implemented through the use of a set of interfaces, such as MICROSOFT's Direct3D interface, OpenGL, etc., that offer control of multimedia hardware (e.g., a graphics accelerator or graphics processing unit (GPU)) on a computer running a particular operating system, such as MICROSOFT WINDOWS, among others. The generation of the pictures or images is commonly called rendering, and the nuts and bolts of such operations are primarily implemented through a graphics accelerator. Generally, in three-dimensional (3D) computer graphics, geometry that represents surfaces (or volumes) of objects in a scene is translated into pixels (picture elements), stored in a frame buffer, and then displayed on a display device. Each object or group of objects may have specific visual properties related to the appearance of surfaces (materials, reflectance, shape, textures, etc.) which may be defined as a rendering context for this object or group of objects.
Consumer demand for increasing sophistication in controls and features for games and other multimedia products for which computer graphics are used, as well as the desire for more realism in generated images, engenders improvements in processing speed and power. Various standards have been developed to improve the visual quality of generated images while consuming fewer bits. One of these standards, the H.264 specification (also known as ISO Motion Picture Experts Group (MPEG)-4 part 10), is a high compression digital video codec standard. An H.264 compliant codec can encode video with approximately three times fewer bits than comparable MPEG-2 encoders while retaining similar video quality. The H.264 specification provides for two types of entropy encoding processes, including context-adaptive binary arithmetic coding (CABAC) and context-adaptive variable length coding (CAVLC). CAVLC is a context-adaptive variation of Huffman coding, where the probabilities of each symbol to encode changes depending on what kind of data is coded. CAVLC uses run-level coding to compactly represent strings of zeros, using such methods as signaling the number of high-frequency +/−1 coefficients and correlating the number of non-zero coefficients in neighboring blocks. Under CAVLC, syntax elements at or below the slice layer (e.g., quantized transform coefficients, such as from 8×8 or 4×4 transformations, or from secondary Hadamard transformations applied to DC coefficients of lower-level 4×4 transformations) are adaptively coded. Current CAVLC decoding architectures can meet at least some of the demands posed by consumers, but use a somewhat restrictive approach in design.